package org.acb.sgp.service.impl;

import java.util.List;
import org.acb.sgp.beans.*;
import org.acb.sgp.dao.*;
import org.acb.sgp.dao.impl.*;
import org.acb.sgp.service.DataAccessService;

public class DataAccessServiceImpl implements DataAccessService {

    private final LocacionDao locacionDao;
    private final DistritoDao distritoDao;
    private final CategoriaLocacionDao categoriaLocacionDao;
    private final ProgramaDao programaDao;
    private final EstadoDao estadoDao;
    private final EpisodioDao episodioDao;
    private final GuionTecnicoDao guionTecnicoDao;
    private final EscenaDao escenaDao;
    private final ImagenLocacionDao imagenLocacionDao;
    private final ActorDao actorDao;
    private final UtileriaDao utileriaDao;
    private final ReglaDao reglaDao;
    private final ObjetoEventoDao objetoEventoDao;
    private final PresupuestoDao presupuestoDao;
    private final DetallePresupuestoDao detallePresupuestoDao;
    private final DetalleItemDao detalleItemDao;

    public DataAccessServiceImpl() {
        locacionDao = new LocacionDaoImpl();
        distritoDao = new DistritoDaoImpl();
        categoriaLocacionDao = new CategoriaLocacionDaoImpl();
        programaDao = new ProgramaDaoImpl();
        estadoDao = new EstadoDaoImpl();
        episodioDao = new EpisodioDaoImpl();
        guionTecnicoDao = new GuionTecnicoDaoImpl();
        escenaDao = new EscenaDaoImpl();
        imagenLocacionDao = new ImagenLocacionDaoImpl();
        actorDao = new ActorDaoImpl();
        utileriaDao = new UtileriaDaoImpl();
        reglaDao = new ReglaDaoImpl();
        objetoEventoDao = new ObjetoEventoDaoImpl();
        presupuestoDao = new PresupuestoDaoImpl();
        detallePresupuestoDao = new DetallePresupuestoDaoImpl();
        detalleItemDao = new DetalleItemDaoImpl();
    }

    @Override
    public void registrarLocacion(Locacion locacion) {
        locacionDao.registrarLocacion(locacion);
    }

    @Override
    public void eliminarLocacion(Locacion locacion) {
        locacionDao.eliminarLocacion(locacion);
    }

    @Override
    public Locacion buscarLocacionPorCodigo(Integer codLocacion) {
        return locacionDao.buscarLocacionPorCodigo(codLocacion);
    }

    @Override
    public List<Locacion> buscarLocacionPorNombreCategoria(String nombre, Integer categoriaId) {
        return locacionDao.buscarLocacionPorNombreCategoria(nombre, categoriaId);
    }

    @Override
    public List<Locacion> listaLocaciones() {
        return locacionDao.listaLocaciones();
    }

    @Override
    public void registrarDistrito(Distrito distrito) {
        distritoDao.registrarDistrito(distrito);
    }

    @Override
    public void eliminarDistrito(Distrito distrito) {
        distritoDao.eliminarDistrito(distrito);
    }

    @Override
    public Distrito buscarDistritoPorCodigo(Integer codDistrito) {
        return distritoDao.buscarDistritoPorCodigo(codDistrito);
    }

    @Override
    public List<Distrito> listaDistritos() {
        return distritoDao.listaDistritos();
    }

    @Override
    public void registrarCategoria(CategoriaLocacion categoria) {
        categoriaLocacionDao.registrarCategoria(categoria);
    }

    @Override
    public void eliminarCategoria(CategoriaLocacion categoria) {
        categoriaLocacionDao.eliminarCategoria(categoria);
    }

    @Override
    public CategoriaLocacion buscarCategoriaPorCodigo(Integer codCategoria) {
        return categoriaLocacionDao.buscarCategoriaPorCodigo(codCategoria);
    }

    @Override
    public List<CategoriaLocacion> listaCategorias() {
        return categoriaLocacionDao.listaCategorias();
    }

    @Override
    public void registrarPrograma(Programa programa) {
        programaDao.registrarPrograma(programa);
    }

    @Override
    public void eliminarPrograma(Programa programa) {
        programaDao.eliminarPrograma(programa);
    }

    @Override
    public Programa buscarProgramaPorCodigo(Integer codPrograma) {
        return programaDao.buscarProgramaPorCodigo(codPrograma);
    }

    @Override
    public List<Programa> listaProgramas() {
        return programaDao.listaProgramas();
    }

    @Override
    public void registrarEstado(Estado estado) {
        estadoDao.registrarEstado(estado);
    }

    @Override
    public void eliminarEstado(Estado estado) {
        estadoDao.eliminarEstado(estado);
    }

    @Override
    public Estado buscarEstadoPorCodigo(Integer codEstado) {
        return estadoDao.buscarEstadoPorCodigo(codEstado);
    }

    @Override
    public List<Estado> listaEstados() {
        return estadoDao.listaEstados();
    }

    @Override
    public void registrarEpisodio(Episodio episodio) {
        episodioDao.registrarEpisodio(episodio);
    }

    @Override
    public void eliminarEpisodio(Episodio episodio) {
        episodioDao.eliminarEpisodio(episodio);
    }

    @Override
    public Episodio buscarEpisodioPorCodigo(Integer codEpisodio) {
        return episodioDao.buscarEpisodioPorCodigo(codEpisodio);
    }

    @Override
    public List<Episodio> listaEpisodios() {
        return episodioDao.listaEpisodios();
    }

    @Override
    public List<Episodio> buscarEpisodiosPorCodPrograma(Integer codPrograma) {
        return episodioDao.buscarEpisodiosPorCodPrograma(codPrograma);
    }

    @Override
    public void registrarGuionTecnico(GuionTecnico guionTecnico) {
        guionTecnicoDao.registrarGuionTecnico(guionTecnico);
    }

    @Override
    public void eliminarGuionTecnico(GuionTecnico guionTecnico) {
        guionTecnicoDao.eliminarGuionTecnico(guionTecnico);
    }

    @Override
    public GuionTecnico buscarGuionTecnicoPorEpisodioPrograma(Integer codEpisodio, Integer codPrograma) {
        return guionTecnicoDao.buscarGuionTecnicoPorEpisodioPrograma(codEpisodio, codPrograma);
    }

    @Override
    public void registrarEscena(Escena escena) {
        escenaDao.registrarEscena(escena);
    }

    @Override
    public void eliminarEscena(Escena escena) {
        escenaDao.eliminarEscena(escena);
    }

    @Override
    public Escena buscarEscenaPorCodigo(Integer codEscena) {
        return escenaDao.buscarEscenaPorCodigo(codEscena);
    }

    @Override
    public List<Escena> buscarEscenasPorEpisodioPrograma(Integer codEpisodio, Integer codPrograma) {
        return escenaDao.buscarEscenasPorEpisodioPrograma(codEpisodio, codPrograma);
    }

    @Override
    public void registrarImagen(ImagenLocacion imagen) {
        imagenLocacionDao.registrarImagen(imagen);
    }

    @Override
    public void eliminarImagen(ImagenLocacion imagen) {
        imagenLocacionDao.eliminarImagen(imagen);
    }

    @Override
    public void eliminarImagenesPorCodLocacion(Integer codLocacion) {
        imagenLocacionDao.eliminarImagenesPorCodLocacion(codLocacion);
    }

    @Override
    public List<ImagenLocacion> listaImagenes() {
        return imagenLocacionDao.listaImagenes();
    }

    @Override
    public List<ImagenLocacion> listaImagenesPorCodLocacion(Integer codLocacion) {
        return imagenLocacionDao.listaImagenesPorCodLocacion(codLocacion);
    }

    @Override
    public void registrarActor(Actor actor) {
        actorDao.registrarActor(actor);
    }

    @Override
    public void eliminarActor(Actor actor) {
        actorDao.eliminarActor(actor);
    }

    @Override
    public List<Actor> buscarActoresPorCodEscena(Integer codEscena) {
        return actorDao.buscarActoresPorCodEscena(codEscena);
    }

    @Override
    public List<Actor> listaActores() {
        return actorDao.listaActores();
    }

    @Override
    public List<Utileria> buscarUtileriasPorCodEscena(Integer codEscena) {
        return utileriaDao.buscarUtileriasPorCodEscena(codEscena);
    }

    @Override
    public List<Regla> buscarReglas(Regla regla) {
        return reglaDao.buscarReglas(regla);
    }

    @Override
    public void registrarRegla(Regla regla) {
        reglaDao.registrarRegla(regla);
    }

    @Override
    public void eliminarRegla(Regla regla) {
        reglaDao.eliminarRegla(regla);
    }

    @Override
    public List<Regla> listarTodasRegla() {
        return reglaDao.listarTodasRegla();
    }

    @Override
    public List<String> evaluarRegla(Regla regla) {
        return reglaDao.evaluarRegla(regla);
    }

    @Override
    public List<ObjetoEvento> listaObjetoEvento() {
        return objetoEventoDao.listaObjetoEvento();
    }

    @Override
    public void registrarPresupuesto(Presupuesto presupuesto) {
        presupuestoDao.registrarPresupuesto(presupuesto);
    }

    @Override
    public void eliminarPresupuesto(Presupuesto presupuesto) {
        presupuestoDao.eliminarPresupuesto(presupuesto);
    }

    @Override
    public Presupuesto buscarPresupuestoPorEpisodio(Integer codEpisodio) {
        return presupuestoDao.buscarPresupuestoPorEpisodio(codEpisodio);
    }

    @Override
    public void registrarDetallePresupuesto(DetallePresupuesto detalle) {
        detallePresupuestoDao.registrarDetallePresupuesto(detalle);
    }

    @Override
    public void eliminarDetallePresupuesto(DetallePresupuesto detallePresupuesto) {
        detallePresupuestoDao.eliminarDetallePresupuesto(detallePresupuesto);
    }

    @Override
    public DetallePresupuesto buscarDetallePresupuestoPorCodigo(Integer codDetalle) {
        return detallePresupuestoDao.buscarDetallePresupuestoPorCodigo(codDetalle);
    }

    @Override
    public List<DetallePresupuesto> buscarDetallesPorCodPresupuesto(Integer codPresupuesto) {
        return detallePresupuestoDao.buscarDetallesPorCodPresupuesto(codPresupuesto);
    }

    @Override
    public void registrarDetalleItem(DetalleItem item) {
        detalleItemDao.registrarDetalleItem(item);
    }

    @Override
    public void eliminarDetalleItem(DetalleItem item) {
        detalleItemDao.eliminarDetalleItem(item);
    }

    @Override
    public DetalleItem buscarDetalleItemPorCodigo(Integer codItem) {
        return detalleItemDao.buscarDetalleItemPorCodigo(codItem);
    }

    @Override
    public List<DetalleItem> buscarItemsPorCodDetalle(Integer codDetalle) {
        return detalleItemDao.buscarItemsPorCodDetalle(codDetalle);
    }

}
